<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>Linux 命令- screen | 失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		<article>
	
		<h1>Linux 命令- screen</h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;screen命令用于多重视窗管理程序。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;screen为多重视窗管理程序。所谓的视窗，是指一个全屏幕的文字模式画面。通常只有在使用telnet登入主机或是使用老式终端机时，才有可能用到screen程序。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;有时候，也许会有这样的需求。要执行一个命令或者脚本，但是需要几个小时甚至几天。这就要考虑一个问题，就是中途断网或出现其他意外情况，执行的任务中断了怎么办？可以把命令或者脚本丢到后台运行，不过也不保险。screen可以避免这样的问题发生。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;screen中有会话的概念，用户可以在一个screen会话中创建多个screen窗口，在每一个窗口中就想操作一个真实的SSH连接窗口那样。</p>
<h2 id="命令语法"><a href="#命令语法" class="headerlink" title="命令语法"></a>命令语法</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">screen [-AmRvx -ls -wipe][-d &lt;作业名称&gt;][-h &lt;行数&gt;][-r &lt;作业名称&gt;][-s &lt;shell&gt;][-S &lt;作业名称&gt;]</div></pre></td></tr></table></figure>
<h2 id="命令参数"><a href="#命令参数" class="headerlink" title="命令参数"></a>命令参数</h2><ul>
<li>-A 　将所有的视窗都调整为目前终端机的大小。</li>
<li>-d&lt;作业名称&gt; 　将指定的screen作业离线。</li>
<li>-h&lt;行数&gt; 　指定视窗的缓冲区行数。</li>
<li>-m 　即使目前已在作业中的screen作业，仍强制建立新的screen作业。</li>
<li>-r&lt;作业名称&gt; 　恢复离线的screen作业。</li>
<li>-R 　先试图恢复离线的作业。若找不到离线的作业，即建立新的screen作业。</li>
<li>-s<shell> 　指定建立新视窗时，所要执行的shell。</shell></li>
<li>-S&lt;作业名称&gt; 　指定screen作业的名称。</li>
<li>-v 　显示版本信息。</li>
<li>-x 　恢复之前离线的screen作业。</li>
<li>-ls或–list 　显示目前所有的screen作业。</li>
<li>-wipe 　检查目前所有的screen作业，并删除已经无法使用的screen作业。</li>
</ul>
<h2 id="命令实例"><a href="#命令实例" class="headerlink" title="命令实例"></a>命令实例</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果没有screen命令需先安装</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">yum install -y screen</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;创建screen终端</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># screen</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;创建 screen 终端 ，并执行 vi命令</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># screen vi ~/main.c </span></div><div class="line"></div><div class="line"><span class="comment">#include </span></div><div class="line"></div><div class="line">main ()</div><div class="line">&#123;</div><div class="line"></div><div class="line">&#125;</div><div class="line"></div><div class="line"><span class="string">"~/mail.c"</span>       0,0-1</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <code>Ctrl+a</code> 再按d键，退出该screen回话，只是退出，并没有结束。需要结束的话输入 <code>Ctrl+d</code> 或者输入 <code>exit</code></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <code>screen -ls</code> 查看已经打开的screen会话</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># screen -ls</span></div><div class="line">There is a screen on:</div><div class="line">20001.pts-0.localhost (Attached)</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;退出后还想再次登录某个screen会话，使用 <code>sreen -r [screen编号]</code> ，这个编号就是上例中那个20001.当只有一个screen会话时，后面的编号是可以省略的。当有某个需要长时间运行的命令或者脚本时就打开一个screen会话，然后运行该任务。按 <code>ctrl+a d</code>退出会话，不影响终端窗口上的任何操作。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;创建新的screen是可以指定自定义名称的</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># screen -S yanyi</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;要想进入该screen，可以直接</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">screen -r yanyi</div></pre></td></tr></table></figure>
<h2 id="screen源码编译安装"><a href="#screen源码编译安装" class="headerlink" title="screen源码编译安装"></a>screen源码编译安装</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">[root@host1 src]<span class="comment"># wget ftp://ftp.gnu.org/pub/gnu/screen/screen-4.0.3.tar.gz</span></div><div class="line">[root@host1 src]<span class="comment"># tar -xvf screen-4.0.3.tar.gz</span></div><div class="line">[root@host1 src]<span class="comment"># cd screen-4.0.3</span></div><div class="line">[root@host1 screen-4.0.2]<span class="comment"># ./configure</span></div><div class="line">[root@host1 screen-4.0.2]<span class="comment"># make</span></div><div class="line">[root@host1 screen-4.0.2]<span class="comment"># make install</span></div><div class="line">[root@host1 screen-4.0.2]<span class="comment"># install -m 644 etc/etcscreenrc /etc/screenrc</span></div><div class="line">[root@host1 screen-4.0.2]<span class="comment"># cp ./screen /bin</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;注意和一般程序的安装过程有所不同，后面两条命令一定要执行。</p>

	

	
		<span class="different-posts"><a href="/2017/10/12/2. Linux 命令/82. Linux 命令- screen/" onclick="window.history.go(-1); return false;">⬅️ Go back </a></span>

	

</article>

	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
